home *** CD-ROM | disk | FTP | other *** search
- README.ppa (c) 1996 Grant R. Guenther, grant@torque.net
-
-
- The IOMEGA PPA3 parallel port SCSI Host Bus Adapter
-
- as embedded in the ZIP drive
-
-
- This README documents the Linux support for the parallel port version of
- IOMEGA's ZIP100. The ZIP100 is an inexpensive and popular, but relatively
- low performance, removable medium disk device. The drive is also available
- as a regular SCSI device, but the driver documented here is for the
- parallel port version. IOMEGA implemented the parallel port version by
- integrating (or emulating ?) their PPA3 parallel to SCSI converter into
- the ZIP drive.
-
- I have implemented a low-level driver, ppa.c, for this parallel port
- host bus adapter, thereby supporting the parallel port ZIP drive as a
- regular SCSI device under Linux.
-
- It is possible that this driver will also work with the original PPA3
- device (to access a CDrom, for instance). But, the PPA3 is hard to find
- and costs as much as the ZIP drive itself, so no-one has actually tried
- this, to the best of my knowledge.
-
- The driver was developed without the benefit of any technical specifications
- for the interface. Instead, a modified version of DOSemu was used to
- monitor the protocol used by the DOS driver, 'guest.exe', for this adapter.
- I have no idea how my programming model relates to IOMEGA's design.
- (One technical consequence of this method: I have never observed a
- SCSI message byte in the protocol transactions between guest.exe and
- the ZIP drive, so I do not know how they are delivered. My working
- hypothesis is that we don't have to worry about them if we don't
- send linked commands to the drive.)
-
- I'd like to thank Byron Jeff (byron@cc.gatech.edu) for publishing his
- observation that the 'guest' driver loads under DOSemu. His remark was
- the stimulus that began this project.
-
- The ppa driver can detect and adapt to 4- and 8-bit parallel ports, but
- there is currently no support for EPP or ECP ports, as I have been unable
- to make the DOS drivers work in these modes on my test rig.
-
- The driver may be built in to the kernel, or loaded as a module. It
- may be configured on the command line in both cases, although the syntax
- is different. It may also be configured by editing the source file.
-
- Built-in drivers accept parameters using this LILO/LOADLIN command line
- syntax (omitted parameters retain their default values):
-
- ppa=base[,speed_high[,speed_low[,nybble]]]
-
- For example: ppa=0x378,0,3
-
- If a driver is loaded as a module the parameters may be set on the
- insmod command line, but each one must be specified by name:
-
- For example: insmod ppa.o ppa_base=0x378 ppa_nybble=1
-
- (Notice the ppa_ prefix on each of the parameters in the insmod form.)
-
- Here are the parameters and their functions:
-
- Variable Default Description
-
- ppa_base 0x378 The base address of PPA's parallel port.
- ppa_speed_high 1 Microsecond i/o delay used in data transfers
- ppa_speed_low 6 Microsecond delay used in other operations
- ppa_nybble 0 1 to force the driver to use 4-bit mode.
-
- A word about the timing parameters: the ppa_speed_low parameter controls
- the widths of a large number of pulses that are sent over the parallel bus,
- the narrower the pulses, the faster things go, but the greater the risk of
- distortion by noise damping circuits in the parallel ports. The
- ppa_speed_high parameter controls the same delays, but during the data
- transfer phase only. In this phase, there is a lot of handshaking going
- on and the pulse shaping should not be so much of an issue, but if you
- see data corruption, you can increase this parameter as well.
-
- You might also want to reduce the timing values to attempt to increase
- the transfer rates on your system. Please be careful to watch for
- SCSI timeout errors in your log files. If you are getting timeouts, you
- have set these parameters too low. The default values appear to be
- safe on most machines.
-
- If you have both the lp and ppa drivers in your kernel, you must ensure
- that they access different parallel ports. By default, the lp driver is
- initialised early in the booting process, and it claims all parallel
- ports that it can find. You may control this behaviour with a LILO or
- LOADLIN command line argument of the form:
-
- lp=base0[,irq0[,base1[,irq1[,base2[,irq2]]]]]
-
- For example: lp=0x278,7
-
- If you use this method, only the ports named will be adopted by the lp
- driver. You can disable them all with lp=0 .
-
- So, if you have a printer on 0x3bc and a ZIP drive on 0x278 you would
- give the following options on your boot command:
-
- lp=0x3bc ppa=0x278
-
- In this case lp would use the polling driver, since an interrupt was not
- specified.
-
- If you want to share the same parallel port between a ZIP drive and a
- printer, you should build both the lp and ppa drivers as modules and
- load and unload one or the other as required. This is clumsy but we
- currently have no protocol for synchronising access to shared parallel
- ports.
-
- For information about using the ZIP drive, please read the generic
- instructions in the SCSI-HOWTO and the man pages for the normal disk
- management tools, fdisk, mkfs, mount, umount, etc. There is a mini-HOWTO
- circulating concerning the use of the normal SCSI version of the ZIP
- drive, most of its comments will apply to disks connected through the
- ppa driver as well.
-
-